--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
android/app/build.gradle v4.8.1 (f6cc7b83) Text, 15.73 KB
Te6edf3plugins Tff7b72{
Te6edf3id Ta5d6ff'com.android.application'
Te6edf3id Ta5d6ff'com.chaquo.python'
Tff7b72}
Tffa657def Te6edf3repoRoot Tff7b72= Te6edf3rootProjectTff7b72.Td2a8ffprojectDirTff7b72.Td2a8ffparentFile
Tffa657def Te6edf3meshchatSourceDir Tff7b72= Tff7b72new Te6edf3FileTff7b72(Te6edf3repoRootTff7b72, Ta5d6ff"meshchatx"Tff7b72)
Tffa657def Te6edf3lxmfySourceDir Tff7b72= Tff7b72new Te6edf3FileTff7b72(Te6edf3repoRootTff7b72, Ta5d6ff"vendor/lxmfy/lxmfy"Tff7b72)
Tffa657def Te6edf3rnsFilesyncSourceDir Tff7b72= Tff7b72new Te6edf3FileTff7b72(Te6edf3repoRootTff7b72, Ta5d6ff"vendor/rns_filesync/rns_filesync"Tff7b72)
Tffa657def Te6edf3repositoryBundledWheelsDir Tff7b72= Tff7b72new Te6edf3FileTff7b72(Te6edf3meshchatSourceDirTff7b72, Ta5d6ff"public/repository-server-bundled/bundled"Tff7b72)
Tffa657def Te6edf3chaquopyBuildPython Tff7b72= Te6edf3SystemTff7b72.Td2a8ffgetenvTff7b72(Ta5d6ff"CHAQUOPY_BUILD_PYTHON"Tff7b72)
Tffa657def Te6edf3pythonTempDir Tff7b72= Tff7b72new Te6edf3FileTff7b72(Te6edf3buildDirTff7b72, Ta5d6ff"python-tmp"Tff7b72)
Tffa657def Te6edf3vendorWheelDir Tff7b72= Tff7b72new Te6edf3FileTff7b72(Te6edf3rootProjectTff7b72.Td2a8ffprojectDirTff7b72, Ta5d6ff"vendor"Tff7b72)
Tffa657def Te6edf3lxstPatchedWheel Tff7b72= Tff7b72new Te6edf3FileTff7b72(Te6edf3rootProjectTff7b72.Td2a8ffprojectDirTff7b72, Ta5d6ff"vendor/lxst-0.5.0-py3-none-any.whl"Tff7b72)
Tffa657def Te6edf3bleakPatchedWheel Tff7b72= Tff7b72new Te6edf3FileTff7b72(Te6edf3rootProjectTff7b72.Td2a8ffprojectDirTff7b72, Ta5d6ff"vendor/bleak-3.0.2-py3-none-any.whl"Tff7b72)
Tffa657def Te6edf3rnsPatchedWheel Tff7b72= Tff7b72new Te6edf3FileTff7b72(Te6edf3rootProjectTff7b72.Td2a8ffprojectDirTff7b72, Ta5d6ff"vendor/rns-1.4.1-py3-none-any.whl"Tff7b72)
Tffa657def Te6edf3allAndroidAbis Tff7b72= Tff7b72[Ta5d6ff"arm64-v8a"Tff7b72, Ta5d6ff"x86_64"Tff7b72, Ta5d6ff"armeabi-v7a"Tff7b72]
Tffa657def Te6edf3selectedAndroidAbis Tff7b72= Tff7b72(
Te6edf3projectTff7b72.Td2a8fffindPropertyTff7b72(Ta5d6ff"meshchatxAbis"Tff7b72)
Tff7b72?Tff7b72: Te6edf3SystemTff7b72.Td2a8ffgetenvTff7b72(Ta5d6ff"MESHCHATX_ABIS"Tff7b72)
Tff7b72?Tff7b72: Te6edf3allAndroidAbisTff7b72.Td2a8ffjoinTff7b72(Ta5d6ff","Tff7b72)
Tff7b72)Tff7b72.Td2a8ffsplitTff7b72(Ta5d6ff","Tff7b72)Tff7b72.Td2a8ffcollect Tff7b72{ Te6edf3itTff7b72.Td2a8fftrimTff7b72(Tff7b72) Tff7b72}Tff7b72.Td2a8fffindAll Tff7b72{ Te6edf3it Tff7b72}
Tff7b72if Tff7b72(Te6edf3selectedAndroidAbisTff7b72.Td2a8ffisEmptyTff7b72(Tff7b72)Tff7b72) Tff7b72{
Tff7b72throw Tff7b72new Te6edf3orgTff7b72.Td2a8ffgradleTff7b72.Td2a8ffapiTff7b72.Td2a8ffGradleExceptionTff7b72(Ta5d6ff"No Android ABIs selected. Use -PmeshchatxAbis or MESHCHATX_ABIS."Tff7b72)
Tff7b72}
Tffa657def Te6edf3invalidAndroidAbis Tff7b72= Te6edf3selectedAndroidAbisTff7b72.Td2a8fffindAll Tff7b72{ Tff7b72!Te6edf3allAndroidAbisTff7b72.Td2a8ffcontainsTff7b72(Te6edf3itTff7b72) Tff7b72}
Tff7b72if Tff7b72(Tff7b72!Te6edf3invalidAndroidAbisTff7b72.Td2a8ffisEmptyTff7b72(Tff7b72)Tff7b72) Tff7b72{
Tff7b72throw Tff7b72new Te6edf3orgTff7b72.Td2a8ffgradleTff7b72.Td2a8ffapiTff7b72.Td2a8ffGradleExceptionTff7b72(Ta5d6ff"Unsupported ABIs: ${invalidAndroidAbis}. Supported: ${allAndroidAbis}"Tff7b72)
Tff7b72}
Tffa657def Te6edf3meshchatxAbiPackaging Tff7b72= Tff7b72(
Te6edf3projectTff7b72.Td2a8fffindPropertyTff7b72(Ta5d6ff"meshchatxAbiPackaging"Tff7b72)
Tff7b72?Tff7b72: Te6edf3SystemTff7b72.Td2a8ffgetenvTff7b72(Ta5d6ff"MESHCHATX_ABI_PACKAGING"Tff7b72)
Tff7b72?Tff7b72: Ta5d6ff"universal"
Tff7b72)Tff7b72.Td2a8fftoStringTff7b72(Tff7b72)Tff7b72.Td2a8fftrimTff7b72(Tff7b72)Tff7b72.Td2a8fftoLowerCaseTff7b72(Tff7b72)
Tff7b72if Tff7b72(Te6edf3meshchatxAbiPackaging Tff7b72!Tff7b72= Ta5d6ff"universal" Tff7b72&Tff7b72& Te6edf3meshchatxAbiPackaging Tff7b72!Tff7b72= Ta5d6ff"split"Tff7b72) Tff7b72{
Tff7b72throw Tff7b72new Te6edf3orgTff7b72.Td2a8ffgradleTff7b72.Td2a8ffapiTff7b72.Td2a8ffGradleExceptionTff7b72(
Ta5d6ff"meshchatxAbiPackaging must be 'universal' or 'split' (got '${meshchatxAbiPackaging}'). " Tff7b72+
Ta5d6ff"Use -PmeshchatxAbiPackaging=... or MESHCHATX_ABI_PACKAGING."
Tff7b72)
Tff7b72}
Tffa657def Te6edf3enableAbiSplits Tff7b72= Te6edf3meshchatxAbiPackaging Tff7b72=Tff7b72= Ta5d6ff"split" Tff7b72&Tff7b72& Te6edf3selectedAndroidAbisTff7b72.Td2a8ffsizeTff7b72(Tff7b72) Tff7b72> T79c0ff1
Te6edf3android Tff7b72{
Te6edf3namespace Ta5d6ff'com.meshchatx'
Te6edf3compileSdk T79c0ff35
Te6edf3defaultConfig Tff7b72{
Te6edf3applicationId Ta5d6ff"com.meshchatx"
Te6edf3minSdk T79c0ff24
Te6edf3targetSdk T79c0ff35
Te6edf3versionCode T79c0ff48001
Te6edf3versionName Ta5d6ff"4.8.1"
Te6edf3testInstrumentationRunner Ta5d6ff"androidx.test.runner.AndroidJUnitRunner"
Te6edf3ndk Tff7b72{
Te6edf3abiFiltersTff7b72(Tff7b72*Te6edf3selectedAndroidAbis Tff7b72as Te6edf3StringTff7b72[Tff7b72]Tff7b72)
Tff7b72}
Tff7b72}
Te6edf3splits Tff7b72{
Te6edf3abi Tff7b72{
Te6edf3enable Te6edf3enableAbiSplits
Te6edf3resetTff7b72(Tff7b72)
Tff7b72if Tff7b72(Te6edf3enableAbiSplitsTff7b72) Tff7b72{
Te6edf3includeTff7b72(Tff7b72*Te6edf3selectedAndroidAbis Tff7b72as Te6edf3StringTff7b72[Tff7b72]Tff7b72)
Tff7b72}
Te6edf3universalApk Te6edf3enableAbiSplits
Tff7b72}
Tff7b72}
Te6edf3buildTypes Tff7b72{
Te6edf3release Tff7b72{
Te6edf3minifyEnabled Tff7b72true
Te6edf3shrinkResources Tff7b72true
Te6edf3proguardFiles Te6edf3getDefaultProguardFileTff7b72(Ta5d6ff'proguard-android-optimize.txt'Tff7b72)Tff7b72, Ta5d6ff'proguard-rules.pro'
Tff7b72}
Tff7b72}
Te6edf3compileOptions Tff7b72{
Te6edf3sourceCompatibility Te6edf3JavaVersionTff7b72.Td2a8ffVERSION_1_8
Te6edf3targetCompatibility Te6edf3JavaVersionTff7b72.Td2a8ffVERSION_1_8
Tff7b72}
Te6edf3packagingOptions Tff7b72{
Te6edf3jniLibs Tff7b72{
Te6edf3useLegacyPackaging Tff7b72= Tff7b72true
Tff7b72}
Tff7b72}
Te6edf3lint Tff7b72{
Te6edf3abortOnError Tff7b72true
Te6edf3checkReleaseBuilds Tff7b72false
Tff7b72}
Tff7b72}
Te6edf3tasksTff7b72.Td2a8ffregisterTff7b72(Ta5d6ff"syncCodec2JniLibs"Tff7b72, Te6edf3ExecTff7b72) Tff7b72{
Te6edf3workingDir Tff7b72= Te6edf3repoRoot
Tffa657def Te6edf3abiArg Tff7b72= Te6edf3selectedAndroidAbisTff7b72.Td2a8ffjoinTff7b72(Ta5d6ff","Tff7b72)
Te6edf3commandLineTff7b72(
Ta5d6ff"bash"Tff7b72,
Ta5d6ff"scripts/android/sync-codec2-jni-libs.sh"Tff7b72,
Te6edf3vendorWheelDirTff7b72.Td2a8ffabsolutePathTff7b72,
Ta5d6ff"${projectDir}/src/main/jniLibs"Tff7b72,
Te6edf3abiArg
Tff7b72)
Te6edf3doFirst Tff7b72{
Tff7b72if Tff7b72(Tff7b72!Te6edf3vendorWheelDirTff7b72.Td2a8ffisDirectoryTff7b72(Tff7b72)Tff7b72) Tff7b72{
Tff7b72throw Tff7b72new Te6edf3orgTff7b72.Td2a8ffgradleTff7b72.Td2a8ffapiTff7b72.Td2a8ffGradleExceptionTff7b72(
Ta5d6ff"Missing android/vendor directory at ${vendorWheelDir}. " Tff7b72+
Ta5d6ff"Run: bash scripts/build-android-wheels-local.sh"
Tff7b72)
Tff7b72}
Tffa657def Te6edf3wheels Tff7b72= Te6edf3vendorWheelDirTff7b72.Td2a8fflistTff7b72(Tff7b72)Tff7b72?Tff7b72.Td2a8fftoListTff7b72(Tff7b72) Tff7b72?Tff7b72: Tff7b72[Tff7b72]
Tff7b72if Tff7b72(Tff7b72!Te6edf3wheelsTff7b72.Td2a8ffany Tff7b72{ Te6edf3itTff7b72.Td2a8ffstartsWithTff7b72(Ta5d6ff"chaquopy_libcodec2-"Tff7b72) Tff7b72}Tff7b72) Tff7b72{
Tff7b72throw Tff7b72new Te6edf3orgTff7b72.Td2a8ffgradleTff7b72.Td2a8ffapiTff7b72.Td2a8ffGradleExceptionTff7b72(
Ta5d6ff"Missing chaquopy_libcodec2 wheels in ${vendorWheelDir}. " Tff7b72+
Ta5d6ff"Run: bash scripts/build-android-wheels-local.sh"
Tff7b72)
Tff7b72}
Tff7b72}
Tff7b72}
Te6edf3tasksTff7b72.Td2a8ffregisterTff7b72(Ta5d6ff"verifyVendorWheels"Tff7b72) Tff7b72{
Te6edf3doLast Tff7b72{
Tffa657def Te6edf3vendorPackages Tff7b72= Tff7b72[
Ta5d6ff"aiohttp"Tff7b72: Ta5d6ff"3.14.1"Tff7b72,
Ta5d6ff"cbor2"Tff7b72: Ta5d6ff"5.6.5"Tff7b72,
Ta5d6ff"cryptography"Tff7b72: Ta5d6ff"49.0.0"Tff7b72,
Tff7b72]
Tffa657def Te6edf3purePythonVendorPrefixes Tff7b72= Tff7b72[
Ta5d6ff"httpx-0.28.1-"Tff7b72,
Ta5d6ff"httpcore-"Tff7b72,
Ta5d6ff"h2-"Tff7b72,
Ta5d6ff"h11-"Tff7b72,
Ta5d6ff"anyio-"Tff7b72,
Ta5d6ff"hpack-"Tff7b72,
Ta5d6ff"hyperframe-"Tff7b72,
Tff7b72]
Tffa657def Te6edf3wheels Tff7b72= Te6edf3vendorWheelDirTff7b72.Td2a8fflistTff7b72(Tff7b72)Tff7b72?Tff7b72.Td2a8fftoListTff7b72(Tff7b72) Tff7b72?Tff7b72: Tff7b72[Tff7b72]
Te6edf3purePythonVendorPrefixesTff7b72.Td2a8ffeach Tff7b72{ Te6edf3prefix Tff7b72-Tff7b72>
Tff7b72if Tff7b72(Tff7b72!Te6edf3wheelsTff7b72.Td2a8ffany Tff7b72{ Te6edf3itTff7b72.Td2a8ffstartsWithTff7b72(Te6edf3prefixTff7b72) Tff7b72&Tff7b72& Te6edf3itTff7b72.Td2a8ffendsWithTff7b72(Ta5d6ff".whl"Tff7b72) Tff7b72}Tff7b72) Tff7b72{
Tff7b72throw Tff7b72new Te6edf3orgTff7b72.Td2a8ffgradleTff7b72.Td2a8ffapiTff7b72.Td2a8ffGradleExceptionTff7b72(
Ta5d6ff"Missing ${prefix}*.whl in ${vendorWheelDir} (httpx/RNS-over-HTTP). " Tff7b72+
Ta5d6ff"Run: bash scripts/build-android-wheels-local.sh"
Tff7b72)
Tff7b72}
Tff7b72}
Te6edf3selectedAndroidAbisTff7b72.Td2a8ffeach Tff7b72{ Te6edf3abi Tff7b72-Tff7b72>
Tffa657def Te6edf3abiTag Tff7b72= Te6edf3abiTff7b72.Td2a8ffreplaceTff7b72(Ta5d6ff"-"Tff7b72, Ta5d6ff"_"Tff7b72)
Te6edf3vendorPackagesTff7b72.Td2a8ffeach Tff7b72{ Te6edf3pkgTff7b72, Te6edf3ver Tff7b72-Tff7b72>
Tffa657def Te6edf3prefix Tff7b72= Ta5d6ff"${pkg}-${ver}-"
Tff7b72if Tff7b72(Tff7b72!Te6edf3wheelsTff7b72.Td2a8ffany Tff7b72{ Te6edf3itTff7b72.Td2a8ffstartsWithTff7b72(Te6edf3prefixTff7b72) Tff7b72&Tff7b72& Te6edf3itTff7b72.Td2a8ffcontainsTff7b72(Ta5d6ff"android_24_${abiTag}"Tff7b72) Tff7b72}Tff7b72) Tff7b72{
Tff7b72throw Tff7b72new Te6edf3orgTff7b72.Td2a8ffgradleTff7b72.Td2a8ffapiTff7b72.Td2a8ffGradleExceptionTff7b72(
Ta5d6ff"Missing ${pkg} ${ver} wheel for ${abi} in ${vendorWheelDir}. " Tff7b72+
Ta5d6ff"Run: bash scripts/build-android-wheels-local.sh --only-recipes ${pkg}-*"
Tff7b72)
Tff7b72}
Tff7b72}
Tff7b72if Tff7b72(Tff7b72!Te6edf3wheelsTff7b72.Td2a8ffany Tff7b72{ Te6edf3itTff7b72.Td2a8ffstartsWithTff7b72(Ta5d6ff"pycodec2-"Tff7b72) Tff7b72&Tff7b72& Te6edf3itTff7b72.Td2a8ffcontainsTff7b72(Ta5d6ff"android_24_${abiTag}"Tff7b72) Tff7b72}Tff7b72) Tff7b72{
Tff7b72throw Tff7b72new Te6edf3orgTff7b72.Td2a8ffgradleTff7b72.Td2a8ffapiTff7b72.Td2a8ffGradleExceptionTff7b72(
Ta5d6ff"Missing pycodec2 wheel for ${abi} in ${vendorWheelDir}. " Tff7b72+
Ta5d6ff"Run: bash scripts/build-android-wheels-local.sh"
Tff7b72)
Tff7b72}
Tff7b72if Tff7b72(Tff7b72!Te6edf3wheelsTff7b72.Td2a8ffany Tff7b72{ Te6edf3itTff7b72.Td2a8ffstartsWithTff7b72(Ta5d6ff"chaquopy_libcodec2-"Tff7b72) Tff7b72&Tff7b72& Te6edf3itTff7b72.Td2a8ffcontainsTff7b72(Ta5d6ff"android_24_${abiTag}"Tff7b72) Tff7b72}Tff7b72) Tff7b72{
Tff7b72throw Tff7b72new Te6edf3orgTff7b72.Td2a8ffgradleTff7b72.Td2a8ffapiTff7b72.Td2a8ffGradleExceptionTff7b72(
Ta5d6ff"Missing chaquopy_libcodec2 wheel for ${abi} in ${vendorWheelDir}. " Tff7b72+
Ta5d6ff"Run: bash scripts/build-android-wheels-local.sh"
Tff7b72)
Tff7b72}
Tffa657def Te6edf3jniLib Tff7b72= Te6edf3fileTff7b72(Ta5d6ff"${projectDir}/src/main/jniLibs/${abi}/libcodec2.so"Tff7b72)
Tff7b72if Tff7b72(Tff7b72!Te6edf3jniLibTff7b72.Td2a8ffisFileTff7b72(Tff7b72) Tff7b72|Tff7b72| Te6edf3jniLibTff7b72.Td2a8fflengthTff7b72(Tff7b72) Tff7b72< T79c0ff100Te6edf3_000Tff7b72) Tff7b72{
Tff7b72throw Tff7b72new Te6edf3orgTff7b72.Td2a8ffgradleTff7b72.Td2a8ffapiTff7b72.Td2a8ffGradleExceptionTff7b72(
Ta5d6ff"Missing or tiny jniLibs/${abi}/libcodec2.so after sync. " Tff7b72+
Ta5d6ff"Expected a real Codec2 shared library for Android calls."
Tff7b72)
Tff7b72}
Tff7b72}
Tff7b72}
Tff7b72}
Te6edf3tasksTff7b72.Td2a8ffconfigureEach Tff7b72{ Te6edf3task Tff7b72-Tff7b72>
Tff7b72if Tff7b72(Te6edf3taskTff7b72.Td2a8ffname Tff7b72=Tff7b72= Ta5d6ff"preBuild"Tff7b72) Tff7b72{
Te6edf3taskTff7b72.Td2a8ffdependsOnTff7b72(Te6edf3tasksTff7b72.Td2a8ffnamedTff7b72(Ta5d6ff"syncCodec2JniLibs"Tff7b72)Tff7b72, Te6edf3tasksTff7b72.Td2a8ffnamedTff7b72(Ta5d6ff"verifyVendorWheels"Tff7b72)Tff7b72)
Tff7b72}
Tff7b72}
Te6edf3tasksTff7b72.Td2a8ffregisterTff7b72(Ta5d6ff"repackAndroidPycodec2Wheels"Tff7b72, Te6edf3ExecTff7b72) Tff7b72{
Te6edf3workingDir Tff7b72= Te6edf3repoRoot
Tffa657def Te6edf3pyExe Tff7b72= Tff7b72(Te6edf3SystemTff7b72.Td2a8ffgetenvTff7b72(Ta5d6ff"MESHCHATX_REPACK_PYTHON"Tff7b72) Tff7b72?Tff7b72: Ta5d6ff"python3"Tff7b72)
Te6edf3commandLineTff7b72(Te6edf3pyExeTff7b72, Ta5d6ff"scripts/repack-android-pycodec2-wheels.py"Tff7b72, Ta5d6ff"--vendor-dir"Tff7b72, Te6edf3vendorWheelDirTff7b72.Td2a8ffabsolutePathTff7b72)
Te6edf3doFirst Tff7b72{
Tff7b72if Tff7b72(Tff7b72!Te6edf3vendorWheelDirTff7b72.Td2a8ffisDirectoryTff7b72(Tff7b72)Tff7b72) Tff7b72{
Tff7b72throw Tff7b72new Te6edf3orgTff7b72.Td2a8ffgradleTff7b72.Td2a8ffapiTff7b72.Td2a8ffGradleExceptionTff7b72(
Ta5d6ff"Missing android/vendor directory at ${vendorWheelDir}"
Tff7b72)
Tff7b72}
Tffa657def Te6edf3wheels Tff7b72= Te6edf3vendorWheelDirTff7b72.Td2a8fflistTff7b72(Tff7b72)Tff7b72?Tff7b72.Td2a8fftoListTff7b72(Tff7b72) Tff7b72?Tff7b72: Tff7b72[Tff7b72]
Tff7b72if Tff7b72(Tff7b72!Te6edf3wheelsTff7b72.Td2a8ffany Tff7b72{ Te6edf3itTff7b72.Td2a8ffstartsWithTff7b72(Ta5d6ff"pycodec2-"Tff7b72) Tff7b72&Tff7b72& Te6edf3itTff7b72.Td2a8ffendsWithTff7b72(Ta5d6ff".whl"Tff7b72) Tff7b72}Tff7b72) Tff7b72{
Tff7b72throw Tff7b72new Te6edf3orgTff7b72.Td2a8ffgradleTff7b72.Td2a8ffapiTff7b72.Td2a8ffGradleExceptionTff7b72(
Ta5d6ff"Missing pycodec2 wheels in ${vendorWheelDir}. " Tff7b72+
Ta5d6ff"Run: bash scripts/build-android-wheels-local.sh"
Tff7b72)
Tff7b72}
Tff7b72if Tff7b72(Tff7b72!Te6edf3wheelsTff7b72.Td2a8ffany Tff7b72{ Te6edf3itTff7b72.Td2a8ffstartsWithTff7b72(Ta5d6ff"chaquopy_libcodec2-"Tff7b72) Tff7b72&Tff7b72& Te6edf3itTff7b72.Td2a8ffendsWithTff7b72(Ta5d6ff".whl"Tff7b72) Tff7b72}Tff7b72) Tff7b72{
Tff7b72throw Tff7b72new Te6edf3orgTff7b72.Td2a8ffgradleTff7b72.Td2a8ffapiTff7b72.Td2a8ffGradleExceptionTff7b72(
Ta5d6ff"Missing chaquopy_libcodec2 wheels needed to repack pycodec2 in ${vendorWheelDir}"
Tff7b72)
Tff7b72}
Tff7b72}
Tff7b72}
Te6edf3tasksTff7b72.Td2a8ffnamedTff7b72(Ta5d6ff"syncCodec2JniLibs"Tff7b72)Tff7b72.Td2a8ffconfigure Tff7b72{
Te6edf3dependsOnTff7b72(Te6edf3tasksTff7b72.Td2a8ffnamedTff7b72(Ta5d6ff"repackAndroidPycodec2Wheels"Tff7b72)Tff7b72)
Tff7b72}
Te6edf3tasksTff7b72.Td2a8ffnamedTff7b72(Ta5d6ff"verifyVendorWheels"Tff7b72)Tff7b72.Td2a8ffconfigure Tff7b72{
Te6edf3dependsOnTff7b72(Te6edf3tasksTff7b72.Td2a8ffnamedTff7b72(Ta5d6ff"syncCodec2JniLibs"Tff7b72)Tff7b72)
Tff7b72}
Te6edf3tasksTff7b72.Td2a8ffregisterTff7b72(Ta5d6ff"fetchRepositoryBundledWheels"Tff7b72, Te6edf3ExecTff7b72) Tff7b72{
Te6edf3workingDir Tff7b72= Te6edf3repoRoot
Tffa657def Te6edf3pyExe Tff7b72= Tff7b72(Te6edf3SystemTff7b72.Td2a8ffgetenvTff7b72(Ta5d6ff"MESHCHATX_FETCH_PYTHON"Tff7b72) Tff7b72?Tff7b72: Ta5d6ff"python3"Tff7b72)
Te6edf3commandLineTff7b72(Te6edf3pyExeTff7b72, Ta5d6ff"scripts/build/fetch_repository_wheels.py"Tff7b72)
Te6edf3ignoreExitValue Tff7b72= Tff7b72false
Te6edf3onlyIf Tff7b72{
Tff7b72if Tff7b72(Te6edf3SystemTff7b72.Td2a8ffgetenvTff7b72(Ta5d6ff"MESHCHATX_OFFLINE_BUILD"Tff7b72) Tff7b72=Tff7b72= Ta5d6ff"1"Tff7b72) Tff7b72{
Tff7b72if Tff7b72(Tff7b72!Te6edf3repositoryBundledWheelsDirTff7b72.Td2a8ffisDirectoryTff7b72(Tff7b72) Tff7b72|Tff7b72| Tff7b72!Te6edf3repositoryBundledWheelsDirTff7b72.Td2a8fflistTff7b72(Tff7b72)Tff7b72?Tff7b72.Td2a8ffany Tff7b72{ Te6edf3itTff7b72.Td2a8ffendsWithTff7b72(Ta5d6ff".whl"Tff7b72) Tff7b72}Tff7b72) Tff7b72{
Tff7b72throw Tff7b72new Te6edf3orgTff7b72.Td2a8ffgradleTff7b72.Td2a8ffapiTff7b72.Td2a8ffGradleExceptionTff7b72(Ta5d6ff"MESHCHATX_OFFLINE_BUILD=1 but repository bundled wheels are missing at ${repositoryBundledWheelsDir}"Tff7b72)
Tff7b72}
Tff7b72return Tff7b72false
Tff7b72}
Tff7b72if Tff7b72(Te6edf3SystemTff7b72.Td2a8ffgetenvTff7b72(Ta5d6ff"MESHCHATX_SKIP_REPOSITORY_WHEELS_FETCH"Tff7b72) Tff7b72=Tff7b72= Ta5d6ff"1"Tff7b72) Tff7b72{
Tff7b72return Tff7b72false
Tff7b72}
Tff7b72if Tff7b72(Tff7b72!Te6edf3repositoryBundledWheelsDirTff7b72.Td2a8ffisDirectoryTff7b72(Tff7b72)Tff7b72) Tff7b72{
Tff7b72return Tff7b72true
Tff7b72}
Tffa657def Te6edf3names Tff7b72= Te6edf3repositoryBundledWheelsDirTff7b72.Td2a8fflistTff7b72(Tff7b72)
Tff7b72return Te6edf3names Tff7b72=Tff7b72= Tff7b72null Tff7b72|Tff7b72| Tff7b72!Te6edf3namesTff7b72.Td2a8ffany Tff7b72{ Te6edf3itTff7b72.Td2a8ffendsWithTff7b72(Ta5d6ff".whl"Tff7b72) Tff7b72}
Tff7b72}
Tff7b72}
Te6edf3tasksTff7b72.Td2a8ffregisterTff7b72(Ta5d6ff"syncMeshchatPython"Tff7b72, Te6edf3SyncTff7b72) Tff7b72{
Te6edf3dependsOnTff7b72(Ta5d6ff"fetchRepositoryBundledWheels"Tff7b72)
Tff7b72if Tff7b72(Tff7b72!Te6edf3meshchatSourceDirTff7b72.Td2a8ffexistsTff7b72(Tff7b72)Tff7b72) Tff7b72{
Tff7b72throw Tff7b72new Te6edf3orgTff7b72.Td2a8ffgradleTff7b72.Td2a8ffapiTff7b72.Td2a8ffGradleExceptionTff7b72(Ta5d6ff"Missing meshchatx source directory at ${meshchatSourceDir}"Tff7b72)
Tff7b72}
Te6edf3doFirst Tff7b72{
Te6edf3deleteTff7b72(
Te6edf3fileTff7b72(Ta5d6ff"$projectDir/src/main/python/meshchatx"Tff7b72)Tff7b72,
Te6edf3fileTff7b72(Ta5d6ff"$projectDir/src/main/python/LXST"Tff7b72)Tff7b72,
Te6edf3fileTff7b72(Ta5d6ff"$projectDir/src/main/python/LXMF"Tff7b72)Tff7b72,
Te6edf3fileTff7b72(Ta5d6ff"$projectDir/src/main/python/RNS"Tff7b72)
Tff7b72)
Tff7b72}
Te6edf3fromTff7b72(Te6edf3meshchatSourceDirTff7b72)
Te6edf3includeEmptyDirs Tff7b72= Tff7b72false
Te6edf3fromTff7b72(Tff7b72new Te6edf3FileTff7b72(Te6edf3repoRootTff7b72, Ta5d6ff"CHANGELOG.md"Tff7b72)Tff7b72)
Te6edf3intoTff7b72(Te6edf3fileTff7b72(Ta5d6ff"$projectDir/src/main/python/meshchatx"Tff7b72)Tff7b72)
Tff7b72}
T8b949e/*
* Desktop installs lxmfy via setuptools (pyproject where=[".", "vendor/lxmfy"]).
* Chaquopy only sees android/app/src/main/python plus pip installs, so the
* vendored package must be synced here or bot_templates import fails at boot.
*/
Te6edf3tasksTff7b72.Td2a8ffregisterTff7b72(Ta5d6ff"syncLxmfyPython"Tff7b72, Te6edf3SyncTff7b72) Tff7b72{
Tff7b72if Tff7b72(Tff7b72!Te6edf3lxmfySourceDirTff7b72.Td2a8ffexistsTff7b72(Tff7b72)Tff7b72) Tff7b72{
Tff7b72throw Tff7b72new Te6edf3orgTff7b72.Td2a8ffgradleTff7b72.Td2a8ffapiTff7b72.Td2a8ffGradleExceptionTff7b72(
Ta5d6ff"Missing vendored lxmfy package at ${lxmfySourceDir}. " Tff7b72+
Ta5d6ff"Expected vendor/lxmfy/lxmfy from the MeshChatX tree."
Tff7b72)
Tff7b72}
Tffa657def Te6edf3initPy Tff7b72= Tff7b72new Te6edf3FileTff7b72(Te6edf3lxmfySourceDirTff7b72, Ta5d6ff"__init__.py"Tff7b72)
Tff7b72if Tff7b72(Tff7b72!Te6edf3initPyTff7b72.Td2a8ffexistsTff7b72(Tff7b72)Tff7b72) Tff7b72{
Tff7b72throw Tff7b72new Te6edf3orgTff7b72.Td2a8ffgradleTff7b72.Td2a8ffapiTff7b72.Td2a8ffGradleExceptionTff7b72(Ta5d6ff"Missing ${initPy}; vendored lxmfy tree looks incomplete."Tff7b72)
Tff7b72}
Te6edf3doFirst Tff7b72{
Te6edf3deleteTff7b72(Te6edf3fileTff7b72(Ta5d6ff"$projectDir/src/main/python/lxmfy"Tff7b72)Tff7b72)
Tff7b72}
Te6edf3fromTff7b72(Te6edf3lxmfySourceDirTff7b72)
Te6edf3includeEmptyDirs Tff7b72= Tff7b72false
Te6edf3intoTff7b72(Te6edf3fileTff7b72(Ta5d6ff"$projectDir/src/main/python/lxmfy"Tff7b72)Tff7b72)
Tff7b72}
T8b949e/*
* Desktop installs rns_filesync via setuptools (pyproject where includes vendor/rns_filesync).
* Chaquopy only sees android/app/src/main/python plus pip installs, so the
* vendored package must be synced here or FileSync imports fail at boot.
*/
Te6edf3tasksTff7b72.Td2a8ffregisterTff7b72(Ta5d6ff"syncRnsFilesyncPython"Tff7b72, Te6edf3SyncTff7b72) Tff7b72{
Tff7b72if Tff7b72(Tff7b72!Te6edf3rnsFilesyncSourceDirTff7b72.Td2a8ffexistsTff7b72(Tff7b72)Tff7b72) Tff7b72{
Tff7b72throw Tff7b72new Te6edf3orgTff7b72.Td2a8ffgradleTff7b72.Td2a8ffapiTff7b72.Td2a8ffGradleExceptionTff7b72(
Ta5d6ff"Missing vendored rns_filesync package at ${rnsFilesyncSourceDir}. " Tff7b72+
Ta5d6ff"Expected vendor/rns_filesync/rns_filesync from the MeshChatX tree."
Tff7b72)
Tff7b72}
Tffa657def Te6edf3initPy Tff7b72= Tff7b72new Te6edf3FileTff7b72(Te6edf3rnsFilesyncSourceDirTff7b72, Ta5d6ff"__init__.py"Tff7b72)
Tff7b72if Tff7b72(Tff7b72!Te6edf3initPyTff7b72.Td2a8ffexistsTff7b72(Tff7b72)Tff7b72) Tff7b72{
Tff7b72throw Tff7b72new Te6edf3orgTff7b72.Td2a8ffgradleTff7b72.Td2a8ffapiTff7b72.Td2a8ffGradleExceptionTff7b72(Ta5d6ff"Missing ${initPy}; vendored rns_filesync tree looks incomplete."Tff7b72)
Tff7b72}
Te6edf3doFirst Tff7b72{
Te6edf3deleteTff7b72(Te6edf3fileTff7b72(Ta5d6ff"$projectDir/src/main/python/rns_filesync"Tff7b72)Tff7b72)
Tff7b72}
Te6edf3fromTff7b72(Te6edf3rnsFilesyncSourceDirTff7b72)
Te6edf3includeEmptyDirs Tff7b72= Tff7b72false
Te6edf3intoTff7b72(Te6edf3fileTff7b72(Ta5d6ff"$projectDir/src/main/python/rns_filesync"Tff7b72)Tff7b72)
Tff7b72}
Te6edf3tasksTff7b72.Td2a8ffconfigureEach Tff7b72{ Te6edf3task Tff7b72-Tff7b72>
Tff7b72if Tff7b72(Te6edf3taskTff7b72.Td2a8ffnameTff7b72.Td2a8fftoLowerCaseTff7b72(Tff7b72)Tff7b72.Td2a8ffcontainsTff7b72(Ta5d6ff"merge"Tff7b72) Tff7b72&Tff7b72& Te6edf3taskTff7b72.Td2a8ffnameTff7b72.Td2a8fftoLowerCaseTff7b72(Tff7b72)Tff7b72.Td2a8ffcontainsTff7b72(Ta5d6ff"pythonsources"Tff7b72)Tff7b72) Tff7b72{
Te6edf3taskTff7b72.Td2a8ffdependsOnTff7b72(
Te6edf3tasksTff7b72.Td2a8ffnamedTff7b72(Ta5d6ff"syncMeshchatPython"Tff7b72)Tff7b72,
Te6edf3tasksTff7b72.Td2a8ffnamedTff7b72(Ta5d6ff"syncLxmfyPython"Tff7b72)Tff7b72,
Te6edf3tasksTff7b72.Td2a8ffnamedTff7b72(Ta5d6ff"syncRnsFilesyncPython"Tff7b72)Tff7b72,
Tff7b72)
Tff7b72}
Tff7b72}
Te6edf3tasksTff7b72.Td2a8ffconfigureEach Tff7b72{ Te6edf3task Tff7b72-Tff7b72>
Tff7b72if Tff7b72(Te6edf3taskTff7b72.Td2a8ffnameTff7b72.Td2a8fftoLowerCaseTff7b72(Tff7b72)Tff7b72.Td2a8ffcontainsTff7b72(Ta5d6ff"python"Tff7b72)Tff7b72) Tff7b72{
Te6edf3taskTff7b72.Td2a8ffdoFirst Tff7b72{
Tff7b72if Tff7b72(Tff7b72!Te6edf3pythonTempDirTff7b72.Td2a8ffexistsTff7b72(Tff7b72)Tff7b72) Tff7b72{
Te6edf3pythonTempDirTff7b72.Td2a8ffmkdirsTff7b72(Tff7b72)
Tff7b72}
Tff7b72if Tff7b72(Te6edf3taskTff7b72.Td2a8ffmetaClassTff7b72.Td2a8ffrespondsToTff7b72(Te6edf3taskTff7b72, Ta5d6ff"environment"Tff7b72, Te6edf3StringTff7b72, Te6edf3ObjectTff7b72)Tff7b72) Tff7b72{
Te6edf3taskTff7b72.Td2a8ffenvironmentTff7b72(Ta5d6ff"TMPDIR"Tff7b72, Te6edf3pythonTempDirTff7b72.Td2a8ffabsolutePathTff7b72)
Te6edf3taskTff7b72.Td2a8ffenvironmentTff7b72(Ta5d6ff"TEMP"Tff7b72, Te6edf3pythonTempDirTff7b72.Td2a8ffabsolutePathTff7b72)
Te6edf3taskTff7b72.Td2a8ffenvironmentTff7b72(Ta5d6ff"TMP"Tff7b72, Te6edf3pythonTempDirTff7b72.Td2a8ffabsolutePathTff7b72)
Tff7b72}
Tff7b72}
Tff7b72}
Tff7b72}
Te6edf3chaquopy Tff7b72{
Te6edf3defaultConfig Tff7b72{
Te6edf3version Ta5d6ff"3.11"
Tff7b72if Tff7b72(Te6edf3chaquopyBuildPython Tff7b72!Tff7b72= Tff7b72null Tff7b72&Tff7b72& Tff7b72!Te6edf3chaquopyBuildPythonTff7b72.Td2a8fftrimTff7b72(Tff7b72)Tff7b72.Td2a8ffisEmptyTff7b72(Tff7b72)Tff7b72) Tff7b72{
Te6edf3buildPython Te6edf3chaquopyBuildPython
Tff7b72}
Te6edf3pip Tff7b72{
Tff7b72if Tff7b72(Tff7b72!Te6edf3vendorWheelDirTff7b72.Td2a8ffexistsTff7b72(Tff7b72)Tff7b72) Tff7b72{
Tff7b72throw Tff7b72new Te6edf3orgTff7b72.Td2a8ffgradleTff7b72.Td2a8ffapiTff7b72.Td2a8ffGradleExceptionTff7b72(Ta5d6ff"Missing vendor wheel directory at ${vendorWheelDir}"Tff7b72)
Tff7b72}
Te6edf3options Ta5d6ff"--find-links"Tff7b72, Te6edf3vendorWheelDirTff7b72.Td2a8ffabsolutePath
Te6edf3install Ta5d6ff"packaging>=23"
Te6edf3install Ta5d6ff"aiohttp==3.14.1"
Tff7b72if Tff7b72(Tff7b72!Te6edf3rnsPatchedWheelTff7b72.Td2a8ffexistsTff7b72(Tff7b72)Tff7b72) Tff7b72{
Tff7b72throw Tff7b72new Te6edf3orgTff7b72.Td2a8ffgradleTff7b72.Td2a8ffapiTff7b72.Td2a8ffGradleExceptionTff7b72(Ta5d6ff"Missing patched RNS wheel at ${rnsPatchedWheel}"Tff7b72)
Tff7b72}
T8b949e// Patched so RNS's Android RNodeInterface never calls RNS.panic() (os._exit)
T8b949e// when usbserial4a/jnius are missing. MeshChatX also ships a Chaquopy jnius
T8b949e// shim, usb4a context bridge, and able BLE stack so USB/BT/BLE RNode can
T8b949e// run. RNode over TCP needs neither native module and always works.
Te6edf3install Te6edf3rnsPatchedWheelTff7b72.Td2a8ffabsolutePath
Te6edf3install Ta5d6ff"lxmf>=1.1.0"
Te6edf3install Ta5d6ff"numpy==1.26.2"
Te6edf3install Ta5d6ff"chaquopy-libcodec2==1.2.0"
Te6edf3install Ta5d6ff"pycodec2==4.1.1"
Te6edf3install Ta5d6ff"miniaudio==1.70"
Tff7b72if Tff7b72(Tff7b72!Te6edf3lxstPatchedWheelTff7b72.Td2a8ffexistsTff7b72(Tff7b72)Tff7b72) Tff7b72{
Tff7b72throw Tff7b72new Te6edf3orgTff7b72.Td2a8ffgradleTff7b72.Td2a8ffapiTff7b72.Td2a8ffGradleExceptionTff7b72(Ta5d6ff"Missing patched LXST wheel at ${lxstPatchedWheel}"Tff7b72)
Tff7b72}
Te6edf3install Te6edf3lxstPatchedWheelTff7b72.Td2a8ffabsolutePath
Tff7b72if Tff7b72(Tff7b72!Te6edf3bleakPatchedWheelTff7b72.Td2a8ffexistsTff7b72(Tff7b72)Tff7b72) Tff7b72{
Tff7b72throw Tff7b72new Te6edf3orgTff7b72.Td2a8ffgradleTff7b72.Td2a8ffapiTff7b72.Td2a8ffGradleExceptionTff7b72(Ta5d6ff"Missing patched bleak wheel at ${bleakPatchedWheel}"Tff7b72)
Tff7b72}
Te6edf3install Te6edf3bleakPatchedWheelTff7b72.Td2a8ffabsolutePath
Te6edf3install Ta5d6ff"psutil>=7.2.2"
Te6edf3install Ta5d6ff"websockets>=16.0"
Te6edf3install Ta5d6ff"bcrypt==3.1.7"
Te6edf3install Ta5d6ff"aiohttp-session>=2.12.1,<3.0.0"
Te6edf3install Ta5d6ff"cryptography==49.0.0"
Te6edf3install Ta5d6ff"pycparser>=3.0"
Te6edf3install Ta5d6ff"pyserial>=3.5"
Te6edf3install Ta5d6ff"usbserial4a==0.4.0"
Te6edf3install Ta5d6ff"ply>=3.11,<4.0"
Te6edf3install Ta5d6ff"cbor2==5.6.5"
T8b949e// Pure-python; wheels are vendored by scripts/build-android-wheels-local.sh
T8b949e// for offline/find-links installs (HTTPInterface / RNS-over-HTTP).
Te6edf3install Ta5d6ff"httpx[http2]==0.28.1"
Tff7b72}
Tff7b72}
Tff7b72}
Te6edf3dependencies Tff7b72{
Te6edf3implementation Ta5d6ff'androidx.core:core:1.16.0'
Te6edf3implementation Ta5d6ff'com.squareup.okhttp3:okhttp:4.12.0'
Te6edf3implementation Ta5d6ff'androidx.appcompat:appcompat:1.7.1'
Te6edf3implementation Ta5d6ff'com.google.android.material:material:1.13.0'
Te6edf3implementation Ta5d6ff'androidx.constraintlayout:constraintlayout:2.2.1'
Te6edf3implementation Ta5d6ff'androidx.webkit:webkit:1.14.0'
Te6edf3implementation Ta5d6ff'androidx.lifecycle:lifecycle-runtime-ktx:2.8.7'
Te6edf3implementation Ta5d6ff'com.github.mik3y:usb-serial-for-android:3.8.1'
Te6edf3testImplementation Ta5d6ff'junit:junit:4.13.2'
Te6edf3androidTestImplementation Ta5d6ff'androidx.test.ext:junit:1.2.1'
Te6edf3androidTestImplementation Ta5d6ff'androidx.test.espresso:espresso-core:3.6.1'
Tff7b72}
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────